package udp;

import java.io.IOException;
import java.net.*;

/**
 * @author DCSGO
 * @version 1.0
 * 1.编写一个接收端A,和一个发送端B
 * 2.接收端A在9999端口等待接收数据(receive)
 * 3.发送端B向接收端A发送数据"hello，明天吃火锅~"
 * 4.接收端A接收到发送端B发送的数据，回复“好的,明天见"，再退出
 * 5.发送端接收回复的数据，再退出
 */
public class UDPSenderB {
    public static void main(String[] args) throws IOException {
        //1.创建一个 datagramSocket 收发数据 并指定其端口号
        int port = 9998;
        DatagramSocket datagramSocket = new DatagramSocket(port);

        //2.创建一个 datagramPacket 用于发送数据 -> 装包
        byte[] data = "hello，明天吃火锅~".getBytes();
        DatagramPacket datagramPacket = /*                    目标主机 地址                       端口号  */
                new DatagramPacket(data, data.length, InetAddress.getByName("192.168.124.10"), 9999);
        datagramSocket.send(datagramPacket);//发送数据 不会阻塞 发送前应确保接收端在接收
        System.out.println("数据已发送！");

        //接收A端发送的回复信息
        byte[] data2 = new byte[1024];
        DatagramPacket datagramPacket2 = new DatagramPacket(data2, data2.length);
        datagramSocket.receive(datagramPacket2);
        System.out.println(new String(data2, 0, datagramPacket2.getLength()));

        //3.关闭相关资源
        datagramSocket.close();
        System.out.println("B端已退出...");
        /*
         * 数据已发送！
         * 好的,明天见
         * B端已退出...
         *
         * 进程已结束，退出代码为 0
         */
    }
}
